package cn.fscode.code.generator.model.resp;

import cn.fscode.code.generator.common.enums.DictTypeEnum;
import cn.fscode.code.generator.common.fieldbind.MyFieldBind;
import cn.fscode.code.generator.gen.DbType;
import cn.fscode.code.generator.model.po.DatasourceConfigPO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;

/**
 * @see DatasourceConfigPO
 * @author shenguangyang
 */
@Getter
@Setter
public class DatasourceResp {
    @TableId
    private Long id;
    /**
     * 数据源名称
     */
    private String name;
    /**
     * 数据库类型
     * @see DbType
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @MyFieldBind(type = DictTypeEnum.DATABASE_TYPE, target = "dbTypeText")
    private Integer dbType;

    @TableField(exist = false)
    private String dbTypeText;

    /** 数据库驱动 */
    private String driverClass;
    /** 数据库别名 */
    private String dbDesc;
    /** 数据库名称 */
    private String dbName;
    /** schema(PGSQL专用) */
    private String schemaName;
    /** 数据库host */
    private String host;
    /** 数据库端口 */
    private Integer port;
    /** 数据库用户名 */
    private String username;
    /** 数据库密码 */
    private String password;
    /** 是否已删除，1：已删除，0：未删除 */
    private Integer isDeleted;
    /** 包名*/
    private String packageName;
    /** 删除的前缀*/
    private String delPrefix;
    /** 代码生成器模板组id*/
    private Integer groupId;
    /** 作者名*/
    private String author;
    /** 数据库分组名称 */
    private String dbGroupName;

    /**
     * 前端 Select 组件格式要求
     */
    public String getKey() {
        return String.valueOf(id);
    }

    /**
     * 前端 Select 组件格式要求
     */
    public String getLabel() {
        return this.name;
    }

    /**
     * 前端 Select 组件格式要求
     */
    public String getValue() {
        return String.valueOf(this.id);
    }
}
